From 86688c6fdee6a70be580d26392bf70fa24513a45 Mon Sep 17 00:00:00 2001 From: Matthias Clasen Date: Mon, 22 Apr 2013 12:03:07 -0400 Subject: [PATCH] Add a revealer example to gtk-demo I tried to make a 'revealer ballet'. Judge for yourself if I succeeded. --- demos/gtk-demo/Makefile.am | 4 +- demos/gtk-demo/demo.gresource.xml | 4 + demos/gtk-demo/revealer.c | 85 ++++++++++++ demos/gtk-demo/revealer.ui | 223 ++++++++++++++++++++++++++++++ 4 files changed, 315 insertions(+), 1 deletion(-) create mode 100644 demos/gtk-demo/revealer.c create mode 100644 demos/gtk-demo/revealer.ui diff --git a/demos/gtk-demo/Makefile.am b/demos/gtk-demo/Makefile.am index 64521a7a22..b2ec42e571 100644 --- a/demos/gtk-demo/Makefile.am +++ b/demos/gtk-demo/Makefile.am @@ -39,6 +39,7 @@ demos = \ pickers.c \ pixbufs.c \ printing.c \ + revealer.c \ rotated_text.c \ search_entry.c \ sizegroup.c \ @@ -86,7 +87,7 @@ gsettings_SCHEMAS = \ @GSETTINGS_RULES@ demos.h: @REBUILD@ $(demos) geninclude.pl - $(AM_V_GEN) (here=`pwd` ; cd $(srcdir) && $(PERL) $$here/geninclude.pl $(demos)) > demos.h + $(AM_V_GEN) (here=`pwd` ; cd $(srcdir) && $(PERL) $$here/geninclude.pl $(demos)) > demos.h gtk3_demo_SOURCES = \ $(demos) \ @@ -112,6 +113,7 @@ RESOURCES= $(demos) \ demo.ui \ menus.ui \ stack.ui \ + revealer.ui \ theming.ui \ alphatest.png \ apple-red.png \ diff --git a/demos/gtk-demo/demo.gresource.xml b/demos/gtk-demo/demo.gresource.xml index 5579cdb87e..28c01aadf2 100644 --- a/demos/gtk-demo/demo.gresource.xml +++ b/demos/gtk-demo/demo.gresource.xml @@ -58,6 +58,9 @@ stack.ui + + revealer.ui + alphatest.png floppybuddy.gif @@ -110,6 +113,7 @@ pickers.c pixbufs.c printing.c + revealer.c rotated_text.c search_entry.c sizegroup.c diff --git a/demos/gtk-demo/revealer.c b/demos/gtk-demo/revealer.c new file mode 100644 index 0000000000..cee1f3db3b --- /dev/null +++ b/demos/gtk-demo/revealer.c @@ -0,0 +1,85 @@ +/* Revealer + * + * GtkRevealer is a container that animates showing and hiding + * of its sole child with nice transitions. + */ + +#include + +static GtkBuilder *builder; +static gint count = 0; + +static void +change_direction (GtkRevealer *revealer) +{ + gboolean revealed; + + revealed = gtk_revealer_get_child_revealed (revealer); + gtk_revealer_set_reveal_child (revealer, !revealed); +} + +static gboolean +reveal_one (gpointer data) +{ + gchar *name; + GtkRevealer *revealer; + + name = g_strdup_printf ("revealer%d", count); + revealer = (GtkRevealer *)gtk_builder_get_object (builder, name); + + gtk_revealer_set_reveal_child (revealer, TRUE); + + g_signal_connect (revealer, "notify::child-revealed", + G_CALLBACK (change_direction), NULL); + count++; + + return count < 9; +} + +static void +response_cb (GtkWidget *dialog, + gint response_id, + gpointer data) +{ + gtk_widget_destroy (dialog); +} + +GtkWidget * +do_revealer (GtkWidget *do_widget) +{ + static GtkWidget *window = NULL; + GError *err = NULL; + + if (!window) + { + builder = gtk_builder_new (); + gtk_builder_add_from_resource (builder, "/revealer/revealer.ui", &err); + if (err) + { + g_error ("ERROR: %s\n", err->message); + return NULL; + } + gtk_builder_connect_signals (builder, NULL); + window = GTK_WIDGET (gtk_builder_get_object (builder, "dialog1")); + gtk_window_set_screen (GTK_WINDOW (window), + gtk_widget_get_screen (do_widget)); + g_signal_connect (window, "destroy", + G_CALLBACK (gtk_widget_destroyed), &window); + g_signal_connect (window, "response", G_CALLBACK (response_cb), NULL); + } + + if (!gtk_widget_get_visible (window)) + { + count = 0; + g_timeout_add (690, reveal_one, NULL); + gtk_widget_show_all (window); + } + else + { + gtk_widget_destroy (window); + window = NULL; + } + + + return window; +} diff --git a/demos/gtk-demo/revealer.ui b/demos/gtk-demo/revealer.ui new file mode 100644 index 0000000000..6449c984e5 --- /dev/null +++ b/demos/gtk-demo/revealer.ui @@ -0,0 +1,223 @@ + + + + + False + 5 + dialog + 300 + 300 + Revealer + + + False + vertical + 2 + + + False + end + + + gtk-close + True + True + True + True + + + False + True + 1 + + + + + False + True + end + 0 + + + + + True + False + center + center + + + True + 2000 + crossfade + + + True + face-cool-symbolic + 6 + + + + + 2 + 2 + + + + + True + 2000 + slide-up + + + True + face-cool-symbolic + 6 + + + + + 2 + 1 + + + + + True + 2000 + slide-right + + + True + face-cool-symbolic + 6 + + + + + 3 + 2 + + + + + True + 2000 + slide-down + + + True + face-cool-symbolic + 6 + + + + + 2 + 3 + + + + + True + 2000 + slide-left + + + True + face-cool-symbolic + 6 + + + + + 1 + 2 + + + + + True + 2000 + slide-up + + + True + face-cool-symbolic + 6 + + + + + 2 + 0 + + + + + True + 2000 + slide-right + + + True + face-cool-symbolic + 6 + + + + + 4 + 2 + + + + + True + 2000 + slide-down + + + True + face-cool-symbolic + 6 + + + + + 2 + 4 + + + + + True + 2000 + slide-left + + + True + face-cool-symbolic + 6 + + + + + 0 + 2 + + + + + False + True + 1 + + + + + + button1 + + + -- 2.30.2